The invention relates to a system and method for managing external content that is to be used or integrated with an organization's software product.
Traditionally, the software or other content development process for a company or organization seeking to create a commercial product involved activities for creating a product that substantively originates from within the company itself. Originating the product from only within the company ensures the proprietary nature of the product and removes any doubt as to the ownership of the product. This approach also ensures that the company or organization itself has the right to set the terms and conditions under which the product is provided to other parties.
Over time, a new model of development has begun to emerge in which a company will use external content, such as software code, images, video, or other content from an external source, to build its commercial product. There are many reasons for this shift in attitude. For one, many modern development projects have become so large that it has become impractical, given realistic commercial development timetables, for a company to internally create the entirety of the content it needs for a given project. Moreover, the growth of the Internet has provided easy access to content, such as software code examples and ready-to-use modules that are exemplary implementations of functions and algorithms needed by the product, often made by experts and specialists that operate better than the company's own efforts. It is often far easier, faster, and more efficient for a company to use, modify, or integrate the external content into its product instead of internally creating the corresponding content.
There are many types of external content that a company may use or distribute in conjunction with its products. For example, the external content may correspond to external software that is organized as a entire program or a set of one or more code modules. This type of external software is modified and integrated into a company's product, sometimes resulting in the company's product being a “derivative work” of the external content. Another example type of external software that may be utilized is a software library. Such libraries correspond to software that are called and linked into a company's products, either statically or dynamically. Another example type of external software that may be used by a company are standalone programs that are not integrated into the company's software code, but are distributed with and called by the company's product. Yet another type of external software includes software tools that are used to create the company's products, such as code compliers, user interface builders, and database builders. Many other examples exist of external software and other content that may be used by a company to build its commercial product.
Since the external content is created by a third party, that third party is typically the copyright owner of the external content. As such, the third party has the right to set the terms and conditions under which its external content may be used by others. These terms and conditions may be set forth in a license agreement, in which the third party is the licensor and the company, organization, or individual seeking to use the external content is the licensee. The license terms may be nothing more than several lines of terms and restrictions in a header file, Readme file, or integrated into a comment section within the content files. On the other hand, the license agreement may be structured as a formal document having numerous contract terms and conditions.
The external content may be acquired in a commercial transaction, in which a third party derives income from allowing companies and individuals to use and integrate its software product. Licenses for such commercial sources of external content are typically associated with very restrictive license terms regarding confidentiality and distribution of the external content to other parties.
The external content may be freeware, in which there is no monetary cost and few if any restrictions associated with using the external content. The external content may be public domain content which is dedicated to the public with no ownership or use restrictions.
The external content may also be “open source” software, which typically refers to software that is provided to be used by others at no monetary cost, but which is also typically associated with an open source license that contain restrictions on a party's ability to use, reproduce, and modify the open source software. Some open source software have limited restrictions on its use by others, merely requiring, for example, that a specified set of notices or attributions of origination be retained by the user of that software. Other open source software are much more restrictive in its terms and conditions. For example, open source software licensed under the GPL (“General Public License”) license agreement requires any derivative or modified work based upon the GPL software to be accessible to other third parties as open source under the GPL terms and conditions, forbids any income from sale or license of the work itself, and mandates that third parties must have the right to access the source code of the modified or derivative work.
As is evident, it is important for a company to manage whether and how external content is to be used or integrated with its product. For example, given the restrictive conditions of GPL-type open source software, a company seeking to create a commercial product may wish to undergo a stringent review process before allowing GPL-based external content to be used in its commercial product. On the other hand, a company may not need much review, if any at all, to decide whether to use certain freeware in its product. Once a company decides to use the external content, there is likely to be terms and conditions that the company will need to track for implementation and compliance.
Embodiments of the present invention relate to a system and method of managing external content that is used or integrated with a product or development process. In some embodiments, the system and method manages and tracks the use of external content, as well an approval process for determining whether the external content is to be used or incorporated. In some embodiments, the system and method manages and tracks compliance with terms and restrictions of the external content. Other and additional objects, features, and advantages of the invention are described in the detailed description, figures, and claims.